home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 November
/
EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso
/
earcd
/
gfx
/
vtdevel3.lha
/
SourceAGA
/
PictureWipe.s
< prev
next >
Wrap
Text File
|
1994-06-27
|
63KB
|
2,744 lines
;PictureWipe
rout ;when this is off, the routine-file will be
;assembled, on=testing
;debug ;when this is on, colors in the background will
;show how much time the routine needs.
;ntsctest ;when this is on, the routineplayer is in ntsc-mode
aga
;ocs ;off=AGA,on=OCS testing not possible on OCS !
routinemode equ 12 ;the routinemode !
; VideoTracker AGA developer source 25-12-93
; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
; wich makes low-resolution overscan a bit ugly.
; no "interactive" support anymore, it's only used by Kick 1.3 users.
; the first part of the source handles the things that are necessary to
; show the picture/copper and playing of the routine.
; the part between the "***" lines is the routine-source.
; at the bottom of the file, there are the necessary incbin-files who
; are needed to test the routine.
; these are saved with "save effect" in videotracker. they are raw
; data files which can be fonts,pictures,landscapes,vectorobjects
; etcetra
; the incbin-files are put in the "variables" table, in the routine
; player-handler
; the place where it's done can be found by searching for "!!!"
opt a+ ;devpac 3 optimize
opt o+
vew_wid equ 48
vew_hgt equ 290
win_hgt equ 117
win_str equ $1a
ifd ocs
pic_wid equ 4 ;wide in bytes
pic_hgt equ 6 ;hoogte
pic_dpt equ 8 ;number planes
pic_ani equ 10 ;aantal effes (anim)
pic_vew equ 12 ;viewmode
pic_cycstr equ 14 ;cycle start (*4)
pic_cycend equ 15 ;cycle end (*4)
pic_cycspd equ 16 ;cycle speed (*4)
pic_cycadd equ 17 ;cycle add (*4)
pic_palnum equ 30 ;aantal kleuren
pic_pal equ 32 ;palette start
pic_palsiz equ 256*2 ;vaste palette size
pic_raw equ pic_pal+pic_palsiz ;palette start
endc
ifnd ocs
pic_wid equ 4 ;wide in bytes
pic_hgt equ 6 ;hoogte
pic_dpt equ 8 ;number planes
pic_ani equ 10 ;aantal effes (anim)
pic_vew equ 12 ;viewmode
pic_cycstr equ 14 ;cycle start (*8)
pic_cycend equ 15 ;cycle end (*8)
pic_cycspd equ 16 ;cycle speed (*8)
pic_cycadd equ 17 ;cycle add (*8)
pic_widmod equ 46 ;animation-width modulo
pic_future equ 50 ;free future space
pic_palnum equ 62 ;aantal kleuren
pic_pal equ 64 ;palette start
pic_palsiz equ 256*4 ;vaste palette size (longwords)
pic_raw equ pic_pal+pic_palsiz ;palette start
endc
var_len equ $300 ;lengte vartabel
var__GfxBase equ $000 ;graphics lib
var_pic1 equ $004 ;current picture
var_anispd1 equ $008 ;animspeed
var_anitel1 equ $00c ;animcount
var_cprbck equ $010 ;copperback
var_bck equ $014 ;background
var_pic2 equ $018 ;current picture
var_ntsc equ $01c ;ntsc/pal frequence
var_lnd equ $020 ;landscape
var_anilop1 equ $024
var_rottrg equ $028 ;effect trigger
var_txt1 equ $040 ;text
var_txt16 equ 15*4+var_txt1
var_vec1 equ $080 ;vectors
var_vec16 equ 15*4+var_vec1
var_fon1 equ $0c0 ;fonts
var_fon16 equ 15*4+var_fon1
var_cols1 equ $100 ;colorsets
var_cols16 equ 15*4+var_cols1
var_obj1 equ $180 ;objects
var_obj16 equ 15*4+var_obj1
ifd rout
;videotracker routine-test
incdir "w:include/"
include "exec/types.i"
include "graphics/gfxbase.i"
include "lvo/graphics_lib.i"
incdir 'videotracker:effect/'
SECTION 1,CODE_C
tus
lea var,a0
; move.l #rotincobj,var_obj1(a0) ;incbinfile !!!
; move.l #rotincbck,var_bck(a0) ;incbinfile !!!
; move.l #rottube,var_vec1(a0) ;incbinfile !!!
; move.l #rotsrc,curpic1 ;picture !!!
; move.l #rotsrc,curpal1 ;palette !!!
; move.l #rotset,var_cols1(a0) ;colorset !!!
bsr paltabres
move.l ($4).w,a6
sub.l a1,a1
jsr -$126(a6) ;findtask
move.l d0,curtsk
move.l d0,a0
move.l $b8(a0),tskpri
lea dosnam,a1 ;doslib openen
moveq.l #0,d0
move.l (4).w,a6
jsr -408(a6) ;openlib
move.l d0,doslib
bsr.s label5 ;videotracker opstarten
move.l curtsk,a0
move.l tskpri,$b8(a0)
move.l ($4).w,a6
jsr -$84(a6) ;forbid
move.l doslib,a1
move.l (4).w,a6
jsr -414(a6) ;closelib
moveq.l #0,d0
rts
label5
move.l (4).w,a6 ;workbench gedoe
move.b 530(a6),ntscmode ;50/60 hertz halen
ifd ntsctest
move.b #60,ntscmode ;60 hertz (ntsc)
endc
cmp.b #50,ntscmode ;ntsc ?
beq.s str.ntsc
move.l #vew_hgt-56,hogscr ;set NTSC screen hight
str.ntsc
lea cprjmp,a2 ;copjmp zetten !
move.l #cprbck-8,d0
move.w d0,6(a2)
swap d0
move.w d0,2(a2)
lea cprbck-8,a2 ;copstr zetten !
move.l #cpr,d0
move.w d0,6(a2)
swap d0
move.w d0,2(a2)
bsr cprsprrem ;sprites legen
lea gfxnam,a1 ;graphics lib openen
move.l (4).w,a6
jsr -408(a6) ;openlib
move.l d0,a6
move.l d0,gfxlib
move.l 38(a6),oldcprlist
bset #1,$bfe001
bsr copbuf ;copper vullen
bsr sysoff
gadrun
btst #6,($bfe001).l
bne gadrun
scrend
scrend.play
bsr syson
move.l gfxlib,a1
move.l (4).w,a6
jsr -414(a6) ;closelib
scrend.qb
moveq.l #0,d0
rts
;vertical blank interrupt, no blits.
;handles counters,interlace,sprite
;level 3
intvb
bra.s intvb.cnt
dc.l 'VIDU'
dc.l 'LOOP'
intvb.cnt
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
move.w $01e(a6),d0
btst #5,d0 ;vblank ?
bne.s intvb.vb
bra.s intcop.end
intvb.vb
bsr grap
bsr palctr ;palette zetten
bsr.s copbuf ;copper vullen
intvb.end
move.w #$0020,$09c(a6) ;vb bit wissen
movem.l (sp)+,d0-d7/a0-a6 ;multitask uit, shit !
rte
intcop.end
movem.l (sp)+,d0-d7/a0-a6
move.l intvbold,-(sp)
rts
;transmission buffer empty routine, BLIT !
;handles routines,animations
inttbe ;tbe interrupt
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
move.w $01e(a6),d0
btst #0,d0 ;no tbe ?
beq.s intdskblk
btst #6,($bfe001).l ;muis ingedrukt ?
beq.s inttbe.cop
btst #2,($dff016).l
beq.s inttbe.cop
ifd debug
move.w #$700,$dff180
endc
bsr rotply ;routineplayer BLIT !
bsr.s copbuf ;copper vullen
ifd debug
move.w #$070,$dff180
endc
inttbe.cop
inttbe.end
move.w #$0001,$09c(a6)
movem.l (sp)+,d0-d7/a0-a6
rte
intdskblk
move.w #$0001,$09c(a6) ;be sure for no tbe handling
movem.l (sp)+,d0-d7/a0-a6
move.l inttbeold,-(sp)
rts
;moves the copperbuffer to the copperlist
;sort of double buffering
copbuf
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
copbuf.novb ;copperchange overslaan
moveq.l #0,d0
move.b $005(a6),d0
lsl.w #8,d0
moveq.l #0,d1
move.b $006(a6),d1
add.w d1,d0
cmp.w #$8,d0 ;lower limit, all stations 100%
blt copbuf.novb
cmp.b #50,ntscmode
beq.s copbuf.pal
cmp.w #$133-72-$10,d0 ;ntsc grens
bge copbuf.novb
bra.s copbuf.cont
copbuf.pal
cmp.w #$133-$10,d0 ;pal grens
bge copbuf.novb
copbuf.cont
lea gra.s,a0 ;buffer copieren
lea cprbuf,a1
copbuf_aga ;AGA stuff :)
move.l #(gra.ql)/4-1,d0
copbuf.a
move.w 2(a0),2(a1)
add.l #4,a0
add.l #4,a1
dbra d0,copbuf.a
copbuf.end
movem.l (sp)+,d0-d7/a0-a6
rts
;goes back to the workbench
syson
movem.l d0-d7/a0-a6,-(sp)
move.w #$0001,$dff09a ;tbeint uit
move.l intvbold,($6c).w
move.l inttbeold,($64).w
move.l 4,a6
jsr -138(a6) ;permit
move.l gfxlib,a6
jsr -462(a6) ;disownblitter
move.l wbview,a1
move.l gfxlib,a6
jsr _LVOLoadView(a6) ; Fix view
jsr _LVOWaitTOF(a6)
jsr _LVOWaitTOF(a6) ; wait for LoadView()
syson.ras
cmp.b #$c0,$dff006 ;prevent copperjump
bne syson.ras
move.l gfxlib,a6
move.l gb_copinit(a6),$dff080 ; Kick it into life
movem.l (sp)+,d0-d7/a0-a6
rts
;goes back to the gadgetscreen
sysoff
movem.l d0-d7/a0-a6,-(sp)
move.l gfxlib,a6
move.l gb_ActiView(a6),wbview ;current view
sub.l a1,a1 ; clear a1
jsr _LVOLoadView(a6) ; Flush View to nothing
jsr _LVOWaitTOF(a6) ; Wait once
jsr _LVOWaitTOF(a6) ; Wait again.
move.l gfxlib,a6
jsr -456(a6) ;ownblitter
move.l 4,a6
jsr -132(a6) ;forbid
move.l ($6c).w,intvbold
move.l #intvb,($6c).w
move.l ($64).w,inttbeold
move.l #inttbe,($64).w
move.w #$8001,$dff09a ;tbeint aan
bsr gracpr ;reset copper
bsr copbuf ;copy copper
move.l #cpr,$dff080
movem.l (sp)+,d0-d7/a0-a6
rts
cprsprrem
movem.l d0-d7/a0-a6,-(sp)
lea cprspr,a0
move.l #sprdat,d0
move.w #7,d1
cprsprrem.a
move.w d0,3*2(a0)
swap d0
move.w d0,1*2(a0)
swap d0
add.l #8,a0
dbra d1,cprsprrem.a
movem.l (sp)+,d0-d7/a0-a6
rts
varset ;variablen neerzetten
movem.l d0-d7/a0-a6,-(sp)
move.l #var,a0
move.l #cprbck,var_cprbck(a0)
move.l gfxlib,var__GfxBase(a0)
move.b ntscmode,var_ntsc(a0)
move.l curpic1,var_pic1(a0) ;variabel
move.l curpic2,var_pic2(a0) ;variabel
move.w anispd1,var_anispd1(a0)
move.w anitel1,var_anitel1(a0)
move.b anilop1,var_anilop1(a0)
move.l #rottrg,var_rottrg(a0)
movem.l (sp)+,d0-d7/a0-a6
rts
;this routine handles all videotracker-routines
rotply
movem.l d0-d7/a0-a6,-(sp)
moveq.l #0,d0
lea currot1,a2 ;routine 1
move.w rotinf1,d0 ;routine info
bsr.s rotplyr
rotply.end
movem.l (sp)+,d0-d7/a0-a6
rts
;this routine handles 1 routine, BLIT !
rotplyr
movem.l d0-d7/a1-a6,-(sp)
move.l #rot,(a2) ;routinestart address
; move.b #50,ntscmode ;ntsc/pal hz
clr.l curpic2 ;background picture
move.w #1,anispd1 ;animationspeed
clr.w anitel1 ;animation position
lea var,a0 ;communication-table
move.l #rotincpic,curpic1 ;incbinfile !!!
clr.l curpic2 ;background picture
move.w #1,anispd1 ;animationspeed
clr.w anitel1 ;animation position
move.b #0,anilop1 ;animloop off/on !!!
move.l #routinemode,d0 ;routinemode !!!
sub.l a0,a0 ;picture info legen
tst.l (a2) ;is er een routine ?
beq rotplyr.end ;interlace handling
move.l intdel,d2 ;delay
move.l inttel,d1 ;teller
cmp.w d2,d1
blt rotplyr.end
clr.l inttel
bsr varset ;variabelen updaten
move.l (a2),a1 ;routine halen
move.l #var,a0 ;variablen tabel
movem.l d3-d7/a1-a6,-(sp)
moveq.l #0,d1 ;vars wissen
moveq.l #0,d2
moveq.l #0,d3
moveq.l #0,d4
moveq.l #0,d5
moveq.l #0,d6
moveq.l #0,d7
sub.l a2,a2
sub.l a3,a3
sub.l a4,a4
sub.l a5,a5
jsr 4(a1) ;routine afwerken
movem.l (sp)+,d3-d7/a1-a6
;Routine:
;
;Input:
;a0=variabelentabel
;d0=routinemode
;
;Output:
;a0=picture
;d1=copperlist
;d2=interruptdelay (NOT used till now)
move.w #$0020,$dff09a ;vb off !
move.l d2,intdel ;delay
lea cprjmp,a3
move.l #cprbck-8,d0
cmp.l (a2),a1 ;routine ondertussen gewipt ?
bne.s rotplyr.nocop
tst.l d1 ;copperlist ?
beq.s rotplyr.nocop
move.l d1,d0
rotplyr.nocop
move.w d0,6(a3)
swap d0
move.w d0,2(a3)
cmp.l #0,a0 ;picture ?
beq.s rotplyr.endvb
move.l a0,curpic1 ;current picture (cycle)
move.l a0,curpal1 ;current palette
tst.b rotdpl ;plane is geleverd
beq.s rotplyr.set
clr.b rotdpl
clr.l cycdel1 ;cycle info wissen
clr.l 4+cycdel1
clr.l curfrm1 ;curfrm1, altijd planes zetten
rotplyr.set
clr.b dplctr
bsr.s grap
bsr grac ;colorset
rotplyr.endvb
move.w #$8020,$dff09a
rotplyr.end
movem.l (sp)+,d0-d7/a1-a6
rts
;removes possible routine-coppers
gracpr
movem.l d0-d7/a0-a6,-(sp)
lea cprjmp,a3
move.l #cprbck-8,d0 ;copperlist resetten
move.w d0,6(a3)
swap d0
move.w d0,2(a3)
movem.l (sp)+,d0-d7/a0-a6
rts
grap ;d7=anim
movem.l d0-d7/a0-a6,-(sp)
clr.l d7
tst.l curpic1 ;current picture ?
beq grap.end
move.l curpic1,a2 ;normal pic halen
lea gracprscr,a1 ;window neerzetten
move.l hogscr,d1
move.w pic_hgt(a2),d3 ;pic hoogte
move.w pic_vew(a2),d5
btst #2,d5 ;interlace ?
beq.s grap.nohi4
lsr.w #1,d3 ;/2
grap.nohi4
cmp.w d3,d1
bge.s grap.hog
move.w d1,d3
grap.hog
sub.w d3,d1
lsr.w #1,d1
add.w #win_str,d1
move.w d1,d2
add.w d3,d2
move.b d1,2(a1) ;y start
move.b d2,6(a1) ;y end
move.w pic_wid(a2),d4 ;pic breedte in bytes
lsl.l #3,d4
move.l #vew_wid*8,d0
move.l #0,d1
move.l #$61,d6
cmp.w #40,pic_wid(a2) ;overscan ?
ble.s grap.noov1
move.l #$41,d6
grap.noov1
move.w pic_vew(a2),d5
btst #15,d5 ;hires ?
beq.s grap.nohi2
move.l #(vew_wid)*8*2,d0
move.l #1,d1
move.l #$61,d6
cmp.w #80,pic_wid(a2) ;overscan ?
ble.s grap.nohi2
move.l #(vew_wid)*8*2,d0
move.l #$51,d6
bra.s grap.noshi2
grap.nohi2
btst #6,d5 ;super hires ?
beq.s grap.noshi2
move.l #(vew_wid)*8*4,d0
move.l #2,d1
move.l #$61,d6
cmp.w #80*2,pic_wid(a2) ;overscan ?
ble.s grap.noshi2
move.l #(vew_wid)*8*4,d0
move.l #$51,d6
grap.noshi2
clr.w d5
cmp.w d0,d4 ;breeder dan scherm ?
ble.s grap.c
move.w d4,d5
move.w d0,d4
sub.w d0,d5 ;modulo
lsr.w #3,d5 ;/8
grap.c
lsr.w d1,d0
lsr.w d1,d4
move.w d0,d2
sub.w d4,d2
lsr.w #1,d2 ;/2
add.w d6,d2
move.b d2,3(a1) ;x start
move.w d2,d3 ;d3 bewaren !
add.w d4,d2 ;d4 bewaren !
move.b d2,7(a1) ;x end
move.w pic_vew(a2),d6
btst #15,d6 ;hires ?
beq.s grap.nohi5
add.l d4,d4 ;*2
bra.s grap.noshi5
grap.nohi5
btst #6,d6 ;super hires ?
beq.s grap.noshi5
add.l d4,d4 ;*4
add.l d4,d4
grap.noshi5
move.l d7,-(sp)
move.w pic_vew(a2),d6
move.l #17,d0
move.l #4,d1 ;ecs 1
move.l #3,d7
btst #15,d6 ;hires ?
beq.s grap.nohi3
move.l #17,d0 ;ecs 9
move.l #4,d1 ;ecs 2
move.l #2,d7
bra.s grap.noshi3
grap.nohi3
btst #6,d6 ;super hires ?
beq.s grap.noshi3
move.l #17,d0 ;ecs 9
move.l #4,d1 ;ecs 2
move.l #1,d7
grap.noshi3
sub.w d0,d3
lsr.w #1,d3
move.w d3,10(a1) ;ddfstrt
move.w d4,d2 ;pic breedte in pixels
lsr.w #4,d2 ;/16
sub.w d1,d2 ;-1
lsl.w d7,d2 ;*8
add.w d2,d3
move.w d3,14(a1) ;ddfstop
move.l (sp)+,d7
lea pic_raw(a2),a0
moveq.l #0,d2
move.w pic_dpt(a2),d2
sub.l #1,d2
muls pic_wid(a2),d2
add.w d2,d5
move.w pic_vew(a2),d2 ;viewmode add
btst #2,d2
beq.s grap.nolace4
moveq.l #0,d2
move.w pic_dpt(a2),d2
muls pic_wid(a2),d2
add.w d2,d5 ;interlace gedoe
grap.nolace4
lea gracprbpl,a4 ;iffpln neerzetten
lea gracprpln,a0 ;iffpln neerzetten
moveq.l #0,d2
move.w pic_dpt(a2),d2 ;plnnummer 1 halen
move.l #8,d6 ;copper step !
tst.l curpic2 ;2de picture ?
bne.s grap.pic2
grap.nopic2
move.w d5,34(a1) ;modulo oneven zetten
bra grap.nodpl
grap.pic2
move.l curpic2,a3 ;oneven plane
move.l curpic2+4,a6 ;oneven plane
move.l currot2,a5 ;oneven plane
clr.l curpic2 ;mischien niet goed
clr.l curpic2+4 ;mischien niet goed
clr.l curpal2 ;mischien niet goed
clr.l currot2 ;mischien niet goed
cmp.l curpic1,a3 ;picture hetzelfde ?
beq.s grap.nopic2
cmp.l #0,currot1 ;routine ?
beq.s grap.norot
cmp.l currot1,a5 ;routine hetzelfde ?
beq.s grap.nopic2
grap.norot
cmp.b #4,d2 ;> 16 kleuren ? (AGA)
bgt grap.nopic2
move.w pic_dpt(a3),d3 ;plnnummer 2 halen
cmp.b d2,d3 ;gelijke plnummers ?
bne.s grap.nopic2
move.w pic_vew(a2),d1
cmp.w pic_vew(a3),d1 ;view gelijk ?
bne.s grap.nopic2
move.w pic_vew(a2),d1 ;groter dan view test
btst #6,d1 ;super hires ?
beq.s grap.nohi2a
move.l #vew_wid*4,d1
bra.s grap.nohi2b
grap.nohi2a
btst #15,d1 ;hires ?
beq.s grap.noshi2a
move.l #vew_wid*2,d1
bra.s grap.nohi2b
grap.noshi2a
move.l #vew_wid,d1
grap.nohi2b
cmp.w pic_wid(a2),d1 ;breder dan view ?
bgt.s grap.small
cmp.w pic_wid(a3),d1 ;breder dan view ?
bgt.s grap.small
move.w pic_vew(a2),d1
btst #2,d1
beq.s grap.nolace8a
move.l hogscr,d1
add.l d1,d1
bra.s grap.nolace8b
grap.nolace8a
move.l hogscr,d1
grap.nolace8b
cmp.w pic_hgt(a2),d1 ;hoger dan view ?
bgt.s grap.small
cmp.w pic_hgt(a3),d1 ;hoger dan view ?
bgt.s grap.small
bra.s grap.big
grap.small
move.w pic_hgt(a2),d1 ;wid+hgt<vew
cmp.w pic_hgt(a3),d1 ;hoogte gelijk ?
bne grap.nopic2
move.w pic_wid(a2),d1
cmp.w pic_wid(a3),d1 ;breedte gelijk ?
bne grap.nopic2
grap.big
move.l a3,curpic2 ;toch wel goed !
move.l a6,curpic2+4
move.l a3,curpal2
move.l a5,currot2
tst.b dplctr ;dual playfield al gezet ?
beq grap.nocop
move.w 30(a1),34(a1) ;modulo copieren
move.w 2(a4),d1 ;bplcon0
btst #10,d1 ;al dual playfield ?
beq.s grap.ta
move.w 2(a0),10(a0) ;plane 0>1 copieren
move.w 6(a0),14(a0)
move.w 18(a0),26(a0) ;plane 2>3 copieren
move.w 22(a0),30(a0)
move.w 34(a0),42(a0) ;plane 4>5 copieren
move.w 38(a0),46(a0)
move.w 50(a0),58(a0) ;plane 6>7 copieren
move.w 54(a0),62(a0)
bra.s grap.tb
grap.ta
move.w 24(a0),58(a0) ;plane 3>7 copieren
move.w 28(a0),62(a0)
move.w 18(a0),42(a0) ;plane 2>5 copieren
move.w 22(a0),46(a0)
move.w 10(a0),26(a0) ;plane 1>3 copieren
move.w 14(a0),30(a0)
move.w 2(a0),10(a0) ;plane 0>1 copieren
move.w 6(a0),14(a0)
grap.tb
move.l #palette,a3 ;palette copieren
move.w #16-1,d1
grap.pal
move.l (a3)+,60(a3)
dbra d1,grap.pal
grap.nocop
add.w d3,d2 ;aantal bitplanes
cmp.w #8,d2 ;8 bitplanes ?
blt grap.no8planes2
move.w #%10000,d2 ;only bit 4
bra grap.8planes2
grap.no8planes2
lsl.w #8,d2
lsl.w #4,d2
grap.8planes2
or.w #$400,d2 ;dual playfield aan
move.w d2,2(a4) ;bplcon0
movem.l d0-d7/a0-a6,-(sp)
move.l curpic,a2 ;animpic ?
move.l curfrm,d7
cmp.l #0,a2
bne.s grap.noanipic
move.l curpic2,a2 ;normal pic ?
move.l curfrm2,d7
cmp.l #0,a2
beq.s grap.nodplpic
grap.noanipic
add.l d6,a0
add.w d6,d6
bsr.s grappln ;a2,d6,d7,d0
grap.nodplpic
movem.l (sp)+,d0-d7/a0-a6
add.w d6,d6
bra.s grap.nodpla
grap.nodpl ;geen dual playfield
cmp.w #8,d2 ;8 bitplanes ?
blt grap.no8planes
move.w #%10000,d2 ;only bit 4
bra grap.8planes
grap.no8planes
lsl.w #8,d2
lsl.w #4,d2
grap.8planes
move.w d2,2(a4) ;bplcon0
grap.nodpla
move.w d5,30(a1) ;modulo even
moveq.l #0,d3
add.w pic_vew(a2),d3 ;viewmode add
moveq.l #0,d2
move.w 2(a4),d2
or.l d3,d2
ifd gui
tst.b genlck
bne grap.genset
endc
or.l #$100,d2 ;genlock off ($302)
ifd gui
bra grap.gencont
grap.genset
or.l #$102,d2 ;genlock on ($302)
grap.gencont
endc
move.w d2,2(a4)
bsr.s grappln ;a2,d6,d7,d0
grap.end
movem.l (sp)+,d0-d7/a0-a6
rts
;sets on of the 2 possible pictures to the copper
;handles interlace
;d7=framenummer
;d6=copperliststap
;d0=raw planes positie
;a2=current picture
grappln ;planes invullen
movem.l d0-d7/a0-a6,-(sp)
lea pic_raw(a2),a1
move.l a1,d0 ;raw planes
moveq.l #0,d2 ;x*y
move.w pic_wid(a2),d2
lsr.l #1,d2 ;/2
moveq.l #0,d3
move.w pic_hgt(a2),d3
muls d3,d2
move.l d2,d4
add.l d2,d2
move.w pic_dpt(a2),d3
muls d3,d4 ;hele picture size
muls d7,d4 ;frame*size d7 !!!
add.l d4,d4
add.l d4,d0
move.l #vew_wid,d5 ;max x view
move.l hogscr,d4 ;max y view
move.w pic_vew(a2),d1 ;viewmode add
btst #2,d1
beq.s grappln.nolace
add.l d4,d4 ;max y view
grappln.nolace
btst #15,d1 ;hires ?
beq.s grappln.nohi
move.l #vew_wid*2,d5 ;max x view
bra.s grappln.noshi
grappln.nohi
btst #6,d1 ;super hires ?
beq.s grappln.noshi
move.l #vew_wid*4,d5 ;max x view
grappln.noshi
moveq.l #0,d3 ;scherm centreren
move.w pic_wid(a2),d3 ;pic breedte in bytes
cmp.w d5,d3 ;breder dan scherm ?
ble.s grappln.qa
sub.w d5,d3 ;-scherm breedte
lsr.w #2,d3 ;/4
add.l d3,d3
add.l d3,d0
grappln.qa
move.w pic_hgt(a2),d3 ;pic hoogte in bytes
cmp.w d4,d3 ;hoger dan scherm ?
ble.s grappln.qb
sub.w d4,d3 ;-scherm breedte
lsr.w #1,d3 ;/2
moveq.l #0,d5
move.w pic_wid(a2),d5 ;pic breedte in bytes
muls pic_dpt(a2),d5
muls d5,d3
add.l d3,d0
grappln.qb
moveq.l #0,d2
move.w pic_wid(a2),d2
move.w pic_vew(a2),d5 ;interlace flipping ?
btst #2,d5
beq.s grappln.nolac7b
move.w $04(a6),d5 ;even/oneven ?
btst #15,d5
beq.s grappln.nolac7b
moveq.l #0,d3
move.w pic_wid(a2),d3
muls pic_dpt(a2),d3
add.l d3,d0
grappln.nolac7b
move.w pic_dpt(a2),d1 ;plnnummer 1 halen
tst.w d1 ;0 planes ?
beq grappln.end
sub.w #1,d1
grappln.a
move.w d0,3*2(a0)
swap d0
move.w d0,1*2(a0)
swap d0
add.l d6,a0 ;d6=copper step !
add.l d2,d0
dbra d1,grappln.a
cmp.w #8,pic_dpt(a2) ;8 planes ?
bne grappln.noham8
btst #3,pic_vew(a2) ;ham ?
beq grappln.noham8
move.w -14(a0),d0 ;get 6
move.w -10(a0),d1
move.w -6(a0),d2 ;get 7
move.w -2(a0),d3
move.w -18(a0),-2(a0) ;5>7
move.w -22(a0),-6(a0) ;5>7
move.w -26(a0),-10(a0) ;4>6
move.w -30(a0),-14(a0) ;4>6
move.w -34(a0),-18(a0) ;3>5
move.w -38(a0),-22(a0) ;3>5
move.w -42(a0),-26(a0) ;2>4
move.w -46(a0),-30(a0) ;2>4
move.w -50(a0),-34(a0) ;1>3
move.w -54(a0),-38(a0) ;1>3
move.w -58(a0),-42(a0) ;0>2
move.w -62(a0),-46(a0) ;0>2
move.w d0,-62(a0) ;6>0
move.w d1,-58(a0) ;6>0
move.w d2,-54(a0) ;7>1
move.w d3,-50(a0) ;7>1
grappln.noham8
grappln.end
movem.l (sp)+,d0-d7/a0-a6
rts
;sets palettes to palette-buffer
grac
movem.l d0-d7/a0-a6,-(sp)
lea curpal1,a3 ;palette 1
move.l #palette,a1
bsr.s gracfrm
lea curpal2,a3 ;palette 2 (dpl)
move.l #16*4+palette,a1
bsr.s gracfrm
bsr palctr ;palette-buffer to copper
grac.end
movem.l (sp)+,d0-d7/a0-a6
rts
;moves palette from picture to palette-buffer
gracfrm
movem.l d0-d7/a0-a6,-(sp)
tst.l (a3) ;palette aanwezig ?
beq.s gracfrm.end
move.l (a3),a2 ;current palette
cmp.l #'PALE',(a2) ;palette ?
bne.s gracfrm.pict
lea 6(a2),a0 ;palette
move.w 4(a2),d0 ;aantal kleuren
bra.s gracfrm.col
gracfrm.pict
cmp.l #'ANIM',(a2) ;animatie ?
bne.s gracfrm.noanim
moveq.l #0,d1
move.w pic_ani(a2),d1
bclr #7,d1 ;behandelbit weghalen
moveq.l #0,d3
move.w pic_wid(a2),d3
lsr.w #1,d3 ;/2
muls pic_hgt(a2),d3
muls pic_dpt(a2),d3
add.l d3,d3
add.l #pic_raw,d3
move.l d3,d5
btst #0,d1
bne.s gracfrm.buf2
moveq.l #0,d5
gracfrm.buf2
add.l d5,a2
gracfrm.noanim
lea pic_pal(a2),a0 ;palette
move.w pic_palnum(a2),d0
tst.w d0 ;0 planes ?
beq.s gracfrm.end
gracfrm.col
gracfrm.fa
move.l (a0)+,(a1)+
dbra d0,gracfrm.fa
gracfrm.end
movem.l (sp)+,d0-d7/a0-a6
rts
;handles colorcycling in the palette-buffer
palcycctr
movem.l d0-d7/a0-a6,-(sp)
move.l curpic1,a2 ;current raw
cmp.l #0,a2
beq.s palcycctr.qb
lea cycdel1,a3 ;cycle delays
move.l #paltab,a4
bsr palcyc
palcycctr.qb
move.l curpic2,a2 ;current raw
cmp.l #0,a2
beq.s palcycctr.c
lea cycdel2,a3 ;cycle delays
move.l #16*2+paltab,a4
bsr palcyc
palcycctr.c
movem.l (sp)+,d0-d7/a0-a6
rts
;copies palette-buffer to copper
palctr
movem.l d0-d7/a0-a6,-(sp)
lea gracprcol,a1 ;AGA
move.l #palette,a0
move.l #paltab,a2
move.w #8-1,d6
palctr.e
move.w #32-1,d7
palctr.d
move.w (a2)+,d0 ;get cycle-position
move.w (a0,d0),6(a1) ;high RGB bits
move.w 2(a0,d0),((32+1)*4)+6(a1) ;low RGB bits
add.l #4,a1
dbra d7,palctr.d
add.l #((32+2)*4),a1
dbra d6,palctr.e
palctr.end
movem.l (sp)+,d0-d7/a0-a6
rts
;reset palette tabel, for proper color cycling
paltabres
movem.l d0-d7/a0-a6,-(sp)
ifd aga
lea 256*2+paltab,a0
move.w #16,a1
move.l #$03c003c4,d0
move.l #$03c803cc,d1
move.l #$03d003d4,d2
move.l #$03d803dc,d3
move.l #$03e003e4,d4
move.l #$03e803ec,d5
move.l #$03f003f4,d6
move.l #$03f803fc,d7
endc
ifd ocs
lea 32*2+paltab,a0
move.w #2,a1
move.l #$00200022,d0
move.l #$00240026,d1
move.l #$0028002a,d2
move.l #$002c002e,d3
move.l #$00300032,d4
move.l #$00340036,d5
move.l #$0038003a,d6
move.l #$003c003e,d7
endc
paltabres.a
movem.l d0-d7,-(a0)
ifd aga
sub.l #$00400040,d0
sub.l #$00400040,d1
sub.l #$00400040,d2
sub.l #$00400040,d3
sub.l #$00400040,d4
sub.l #$00400040,d5
sub.l #$00400040,d6
sub.l #$00400040,d7
endc
ifd ocs
sub.l #$00200020,d0
sub.l #$00200020,d1
sub.l #$00200020,d2
sub.l #$00200020,d3
sub.l #$00200020,d4
sub.l #$00200020,d5
sub.l #$00200020,d6
sub.l #$00200020,d7
endc
sub.w #1,a1
cmp.w #0,a1
bne paltabres.a
paltabres.end
movem.l (sp)+,d0-d7/a0-a6
rts
;colorcyclinghandling of a palette
palcyc
movem.l d0-d7/a0-a6,-(sp)
move.w #4-1,d7 ;4 cycles
palcyc.d
tst.w (a3)+ ;delay klaar ?
bne.s palcyc.c
moveq.l #0,d1
move.b pic_cycstr(a2),d1 ;start color
lsl.b #1,d1 ;*2
moveq.l #0,d2
move.b pic_cycend(a2),d2 ;end color
lsl.b #1,d2 ;*2
moveq.l #0,d3
move.b pic_cycadd(a2),d3 ;richting
move.l a4,a0 ;palette pointer
move.l a0,a1
add.l d1,a0 ;startcolor
add.l d2,a1 ;endcolor
cmp.b #1,d3 ;omhoog
beq.s palcyc.up
cmp.b #3,d3 ;omlaag
beq.s palcyc.down
bra.s palcyc.i
palcyc.up ;kleuren copieren
move.w (a1),d4 ;laatst color bewaren
palcyc.f ;kleuren copieren
cmp.l a0,a1
beq.s palcyc.fa
move.w -(a1),2(a1)
bra.s palcyc.f
palcyc.fa
move.w d4,(a1)
bra.s palcyc.g
palcyc.down
move.w (a0),d4 ;laatst color bewaren
palcyc.h ;kleuren copieren
cmp.l a0,a1
beq.s palcyc.ha
move.w 2(a0),(a0)+
bra.s palcyc.h
palcyc.ha
move.w d4,(a1)
palcyc.g
move.b pic_cycspd(a2),-1(a3) ;delay zetten
bra.s palcyc.i
palcyc.c
sub.w #1,-2(a3) ;cycle delay aftellen
palcyc.i
add.l #4,a2 ;next cycle info
dbra d7,palcyc.d
palcyc.qb
movem.l (sp)+,d0-d7/a0-a6
rts
; SECTION variabelen,DATA_c
cnop 0,2
curtsk dc.l 0
tskpri dc.l 0
duplok dc.l 0
inttel dc.l 0
intdel dc.l 0
form dc.l 0
ifffil dc.l 0
intvbold dc.l 0
inttbeold dc.l 0
patpos dc.l 0
gfxlib dc.l 0
doslib dc.l 0
wbview dc.l 0
mt_data dc.l 0
memvid dc.l 0
oldcprlist dc.l 0
hogscr dc.l vew_hgt
inspos dc.l -1
anispd1 dc.w 1 ;nooit op 0 !
anispd2 dc.w 1
cnop 0,2
varclr.s ;start wissen
oldrot dc.l 0
curpic dc.l 0
curfrm dc.l 0
cycdel1 ds.w 4
cycdel2 ds.w 4
rotinf1 dc.w 0
rotinf2 dc.w 0
effspd dc.w 0
efflop dc.b 0
anilop1 dc.b 0
anilop2 dc.b 0
anipal1 dc.b 0
anipal2 dc.b 0
rotdpl dc.b 1
rottrg dc.b 1
dplctr dc.b 0
cnop 0,2
insdat ds.l 4
inspri dc.l 0
instel dc.w 0
cureff dc.l 0
efftel dc.w 0
curpal1 dc.l 0
curpal2 dc.l 0
currot1 dc.l 0
currot2 dc.l 0
curpic1 dc.l 0
curpic2 dc.l 0
anitel1 dc.w 0
anitel2 dc.w 0
curfrm1 dc.l 0
curfrm2 dc.l 0
oldfrm1 dc.l 0
oldfrm2 dc.l 0
varclr.e
dc.l 0 ;wisruimte
varclr.ql equ varclr.e-varclr.s ;wislengte
ntscmode dc.b 0
end dc.b 0
pronam dc.b 'VideoTracker',0
cnop 0,2
dosnam dc.b 'dos.library',0
cnop 0,4
gfxnam dc.b 'graphics.library',0
cnop 0,4
cnop 0,4
gra.s ;copperlist edit buffer
gracprscr
dc.w $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
gracprbpl
dc.w $100,$0000,$102,$0000,$104,$0020
dc.w $108,$0000,$10a,$0000,$1fc,$0003
gracprpln
dc.w $e0,$0000,$e2,$0000 ;1
dc.w $e4,$0000,$e6,$0000 ;2
dc.w $e8,$0000,$ea,$0000 ;3
dc.w $ec,$0000,$ee,$0000 ;4
dc.w $f0,$0000,$f2,$0000 ;5
dc.w $f4,$0000,$f6,$0000 ;6
dc.w $f8,$0000,$fa,$0000 ;7
dc.w $fc,$0000,$fe,$0000 ;8
gracprcol
dc.w $106,$0000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$0200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$1000
cprjmp
dc.w $080,0,$082,0
gra.e
gra.ql equ gra.e-gra.s ;block lengte
cpr ;real copperlist
dc.w $0001,$fffe
dc.w $09c,$8001 ;tbeint
cprspr
dc.w $120,$0000,$122,$0000
dc.w $124,$0000,$126,$0000
dc.w $128,$0000,$12a,$0000
dc.w $12c,$0000,$12e,$0000
dc.w $130,$0000,$132,$0000
dc.w $134,$0000,$136,$0000
dc.w $138,$0000,$13a,$0000
dc.w $13c,$0000,$13e,$0000
cprbuf
dc.w $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
dc.w $100,$9000,$102,$0000,$104,$0020
dc.w $108,$0000,$10a,$0000,$1fc,$0003
dc.w $e0,$0000,$e2,$0000 ;0
dc.w $e4,$0000,$e6,$0000 ;1
dc.w $e8,$0000,$ea,$0000 ;2
dc.w $ec,$0000,$ee,$0000 ;3
dc.w $f0,$0000,$f2,$0000 ;4
dc.w $f4,$0000,$f6,$0000 ;5
dc.w $f8,$0000,$fa,$0000 ;6
dc.w $fc,$0000,$fe,$0000 ;7
dc.w $106,$0000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$0200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$1000
dc.w $080,0,$082,0
cprbuf.e
dc.w $088,$0000 ;copjmp2
dc.w $080,0,$082,0 ;moet achter cprbck blijven !
cprbck
sprdat
dc.w $ffff,$fffe
palette ds.l 256 ;palette 24-bits, far out !
paltab ds.w 256 ;palette cycle-tabel
cnop 0,2
var ds.b $300 ;variabelen voor routines
; SECTION 10,CODE_C
endc
; this is the routine-source
;**********************************************************************
; Input:
; a0=variabelen tabel
; d0=routinfo
; Output:
; a0=picture
; d1=copperlist
SECTION 3,CODE
cnop 0,8
rot
rotp
ifd ocs
dc.l 'ROTO'
endc
ifnd ocs
dc.l 'ROTA'
endc
movem.l d2-d7/a1-a6,-(sp)
lea ($dff000).l,a6 ;hardware
lea rot,a5 ;prog base
ifd rout
move.l #rotc,a2
endc
move.l a2,rotchp-rot(a5)
move.l var_rottrg(a0),a2 ;opnieuw getriggerd ?
tst.b (a2)
beq.s rot.nonewwipe
clr.b (a2)
move.b #1,rottrgrot-rot(a5)
move.l d0,rotmod-rot(a5)
clr.l rotmrppos-rot(a5)
rot.nonewwipe
; move.l d0,d1
; divs #256,d1
; and.l #$ffff,d1
;; move.l d1,rotshp2-rot(a5) ;sinusshape pic 2
; muls #256,d1
; sub.l d1,d0
; move.l d0,d1
; divs #16,d1
; and.l #$ffff,d1
; move.l d1,rotshp2-rot(a5) ;sinusshape pic 2
; muls #16,d1
; sub.l d1,d0
; move.l d0,rotshp1-rot(a5) ;sinusshape pic 1
bsr rotfil
move.l var_cprbck(a0),a2
move.l a2,d1
sub.l #8,d1
move.l rotchp-rot(a5),a1
add.l #rotcop.1-rotc,a1 ;copperjump adres zetten
add.l rotbuf-rot(a5),a1
move.w d1,6(a1)
swap d1
move.w d1,2(a1)
bsr rotset
sub.l a0,a0 ;geen pic
ifd rout
move.l #rotincpic,a0 ;incbinfile !!!
endc
move.l rotchp-rot(a5),a1
add.l #rotcop.1-rotc,a1 ;copperlist
add.l rotbuf-rot(a5),a1
eor.l #rotcop.2-rotcop.1,rotbuf-rot(a5)
move.l a1,d1
movem.l (sp)+,d2-d7/a1-a6
rts
rotfil
movem.l d0-d7/a0-a6,-(sp)
move.l rotchp-rot(a5),a0
add.l #rotcop.1-rotc,a0
tst.w 2(a0) ;leeg ?
bne rotfil.end
move.w #win_str,d1
move.w #vew_hgt-4-1,d0
rotfil.a
move.b d1,8(a0)
add.l #1,d1
add.l #rotcop.t,a0
dbra d0,rotfil.a
move.l rotchp-rot(a5),a0
add.l #rotcop.1-rotc,a0
move.l a0,a1
add.l #rotcop.2-rotcop.1,a1
move.w #rotcop_l/2-1,d0
rotfil.c
move.w (a0)+,(a1)+
dbra d0,rotfil.c
rotfil.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotcopclr
movem.l d0-d7/a0-a6,-(sp)
lea (9*32+rotcopscr),a0
moveq.l #0,d0
moveq.l #0,d1
moveq.l #0,d2
moveq.l #0,d3
moveq.l #0,d4
moveq.l #0,d5
moveq.l #0,d6
moveq.l #0,d7
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
movem.l d0-d7,-(a0)
rotcopclr.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotcopfil
movem.l d0-d7/a0-a6,-(sp)
lea rotcopscr+vew_hgt-4,a1
move.l #vew_hgt-4-1,d0
rotcopfil.e
tst.b -(a1)
bne rotcopfil.f
dbra d0,rotcopfil.e
moveq.l #0,d0
rotcopfil.f
muls #rotcop.t,d0
move.l a3,a4
add.l d0,a4
move.l a3,a2
add.l #rotcop.t*(vew_hgt-4),a2
lea rotcopemp,a0
move.l a0,d0
move.l a0,d1
move.l a0,d2
move.l a0,d3
move.l a0,d4
move.l a0,d5
move.l a0,d6
move.l a0,d7
lea rotcopscr,a1
rotcopfil.a
cmp.l a3,a4
beq rotcopfil.h
tst.b (a1)+
beq.s rotcopfil.c
move.l d0,a0
move.w 18(a3),d0 ;0
swap d0
move.w 22(a3),d0
cmp.l d0,a0
beq rotcopfil.d
move.w 26(a3),d1 ;1
swap d1
move.w 30(a3),d1
move.w 34(a3),d2 ;2
swap d2
move.w 38(a3),d2
move.w 42(a3),d3 ;3
swap d3
move.w 46(a3),d3
move.w 50(a3),d4 ;4
swap d4
move.w 54(a3),d4
move.w 58(a3),d5 ;5
swap d5
move.w 62(a3),d5
move.w 66(a3),d6 ;6
swap d6
move.w 70(a3),d6
move.w 74(a3),d7 ;7
swap d7
move.w 78(a3),d7
bra.s rotcopfil.d
rotcopfil.c
move.l d0,a0
move.w 18(a3),d0 ;0
swap d0
move.w 22(a3),d0
cmp.l d0,a0
beq.s rotcopfil.d
move.l a0,d0
move.w d0,22(a3)
swap d0
move.w d0,18(a3) ;0
swap d0
move.w d1,30(a3)
swap d1
move.w d1,26(a3) ;1
swap d1
move.w d2,38(a3)
swap d2
move.w d2,34(a3) ;2
swap d2
move.w d3,46(a3)
swap d3
move.w d3,42(a3) ;3
swap d3
move.w d4,54(a3)
swap d4
move.w d4,50(a3) ;4
swap d4
move.w d5,62(a3)
swap d5
move.w d5,58(a3) ;5
swap d5
move.w d6,70(a3)
swap d6
move.w d6,66(a3) ;6
swap d6
move.w d7,78(a3)
swap d7
move.w d7,74(a3) ;7
swap d7
rotcopfil.d
add.l #rotcop.t,a3
bra rotcopfil.a
rotcopfil.h
lea rotcopemp,a0
move.l a0,d0
move.l d0,d1
swap d1
rotcopfil.g
cmp.l a3,a2
beq.s rotcopfil.end
cmp.w 22(a3),d0
bne.s rotcopfil.n
cmp.w 18(a3),d1 ;0
beq.s rotcopfil.m
rotcopfil.n
move.w d0,22(a3)
move.w d1,18(a3) ;0
move.w d0,30(a3)
move.w d1,26(a3) ;1
move.w d0,38(a3)
move.w d1,34(a3) ;2
move.w d0,46(a3)
move.w d1,42(a3) ;3
move.w d0,54(a3)
move.w d1,50(a3) ;4
move.w d0,62(a3)
move.w d1,58(a3) ;5
move.w d0,70(a3)
move.w d1,66(a3) ;6
move.w d0,78(a3)
move.w d1,74(a3) ;7
rotcopfil.m
add.l #rotcop.t,a3
bra rotcopfil.g
rotcopfil.end
movem.l (sp)+,d0-d7/a0-a6
rts
;a1 picture
;d1 rawplanes
;a2 sinusinfo
rotget
movem.l d3-d7/a0-a6,-(sp)
lea rotsintab,a3
move.l (a2),d0 ;get current x-pos
clr.l d3
move.w (a3,d0),d3 ;get sinus value
clr.l d4
move.w pic_wid(a1),d4 ;pic width in bytes
lsl.l #3,d4 ;*8
move.l #vew_wid*8,d7
btst #15-8,pic_vew(a1)
beq rotget.bc
move.l #vew_wid*8*2,d7
rotget.bc
sub.l d7,d4 ;-vewwidth
cmp.w #0,d4 ;<0 ?
bge rotget.ba
clr.l d4
bra rotget.endx
rotget.ba
muls d4,d3
ifd ocs
lsr.l #8,d3 ;/1024
lsr.l #2,d3
divs #16,d3
swap d3
move.w #$f,d4
sub.w d3,d4
or.w d4,d2 ;bitshift $102
endc
ifnd ocs
lsr.l #8,d3 ;/256
lsr.l #2,d3
divs #64,d3
swap d3
move.w #64-1,d4
sub.w d3,d4
bfexts d4{26:2},d6
bfins d6,d2{20:2}
bfexts d4{28:4},d6
bfins d6,d2{28:4}
endc
clr.w d3
swap d3
ifd ocs
lsl.l #1,d3 ;*2
endc
ifnd ocs
lsl.l #3,d3 ;*8
endc
add.l d3,d1 ;raw+x
rotget.endx
add.l 8(a2),d0 ;+ sinusadd
cmp.l #rotsintab.e-rotsintab,d0
blt rotget.bb
sub.l #rotsintab.e-rotsintab,d0
rotget.bb
move.l d0,(a2) ;return position
move.l 4(a2),d0 ;get current y-pos
clr.l d3
move.w (a3,d0),d3 ;get sinus value
clr.l d4
move.w pic_hgt(a1),d4 ;pic heigth
move.l #vew_hgt,d7
cmp.b #50,var_ntsc(a0) ;ntsc check
beq rotget.pal
sub.l #56,d7
rotget.pal
btst #2,pic_vew(a1)
beq rotget.cc
add.l d7,d7
rotget.cc
sub.l d7,d4 ;-vewheigth
cmp.w #0,d4 ;<0 ?
bge rotget.ca
clr.l d4
rotget.ca
muls d4,d3
lsr.l #8,d3 ;/1024
lsr.l #2,d3
clr.l d4
move.w pic_wid(a1),d4 ;*width
muls pic_dpt(a1),d4 ;*depth
muls d4,d3
add.l d3,d1 ;raw+y
add.l 12(a2),d0 ;+ sinusadd
cmp.l #rotsintab.e-rotsintab,d0
blt rotget.c
sub.l #rotsintab.e-rotsintab,d0
rotget.c
move.l d0,4(a2) ;return position
movem.l (sp)+,d3-d7/a0-a6
rts
rotset
movem.l d0-d7/a0-a6,-(sp)
tst.l var_pic1(a0) ;is there a picture ?
beq rotset.end
clr.l d2 ;$102 bitshift
move.l var_pic1(a0),a1 ;get picture
cmp.l #'PICT',(a1)
bne rotset.end ;nog aanwezig ?
lea pic_raw(a1),a3 ;start picture planes
move.l a3,d1
move.l d1,d5 ;plane1 naar plane2 copieren
clr.l d3
move.w pic_wid(a1),d3 ;skip voor plane1
; move.l rotshp1-rot(a5),d0 ;shape number
; muls #4*4,d0
clr.l d0
lea rotshptab,a2 ;sinus shape table
lea (a2,d0),a2
bsr rotget ;a1,a2,d1=d2,d1
exg.l d1,d5 ;store pic1, get frsh pic1
ror.l #4,d2 ;store bitshift
; move.l rotshp2-rot(a5),d0 ;shape number
; muls #4*4,d0
clr.l d0
lea 4*4*16+rotshptab,a2 ;sinus shape table
lea (a2,d0),a2
tst.l var_pic2(a0) ;is there double playfield ?
beq rotset.nodpl
move.l var_pic2(a0),a4 ;pic halen
cmp.l #'PICT',(a4)
bne rotset.nodpl ;nog aanwezig ?
cmp.l a1,a4 ;hetzelfde ?
bne rotset.dpl
rotset.nodpl
add.l d3,d1 ;get plane2 from pic1
lsl.l #1,d3 ;*2 double skip
move.l d3,d4 ;planeskip copieren
bsr rotget ;a1,a2,d1=d2,d1
bra rotset.pln
rotset.dpl
move.l var_pic2(a0),a1 ;pic halen
lea pic_raw(a1),a3
move.l a3,d1 ;raw planes halen
clr.l d4 ;skip halen
move.w pic_wid(a1),d4
bsr rotget ;a1,a2,d1=d2,d1
rotset.pln
rol.l #4,d2 ;get complete bitshift
move.l rotchp-rot(a5),a3
add.l #rotcop.1-rotc,a3
add.l rotbuf-rot(a5),a3
move.w d2,14(a3)
move.l rotmod-rot(a5),d0 ;routinemode
lea rotwiptab,a4
muls #rotwiptab.t,d0
add.l d0,a4
move.l (a4),a2
add.l a5,a2
jsr (a2)
rotset.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotvew
movem.l d0-d7/a0-a6,-(sp)
clr.l d7
move.w pic_dpt(a1),d7 ;depth
clr.l d6
move.w pic_hgt(a1),d6 ;hoogte
clr.l d2
move.w pic_wid(a1),d2 ;breedte
cmp.w #vew_hgt,d6 ;high centring
bge rotvew.d
move.w #vew_hgt,d0
sub.w d6,d0
lsr.l #1,d0
muls d2,d0 ;width
muls d7,d0 ;depth
sub.l d0,d5
sub.l d0,d1
rotvew.d
lsr.l #1,d7
move.w #vew_hgt-4-1,d2
rotvew.c
move.w d7,d0 ;depth
sub.w #1,d0
rotvew.a
move.w d5,22(a3)
swap d5
move.w d5,18(a3)
swap d5
move.w d1,30(a3)
swap d1
move.w d1,26(a3)
swap d1
add.l #16,a3
add.l d3,d5
add.l d4,d1
dbra d0,rotvew.a
move.l #rotcop.t,d0
move.l d7,d6
lsl.l #4,d6
sub.l d6,d0
add.l d0,a3
dbra d2,rotvew.c
rotvew.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotmrp
movem.l d0-d7/a0-a6,-(sp)
bsr rotcopclr
tst.b rottrgrot-rot(a5)
beq.s rotmrp.nonewwipe
clr.b rottrgrot-rot(a5)
move.l 4(a4),a2 ;morph start
add.l a5,a2
move.l 8(a4),a1 ;morph end
add.l a5,a1
lea rotmrp.add,a6
move.w #vew_hgt-4-1,d2
rotmrp.e
move.l (a2)+,d0
move.l (a1)+,d6
lsl.l #7,d0
lsl.l #7,d6
sub.l d0,d6
move.l d6,(a6)+
dbra d2,rotmrp.e
clr.l rotmrppos-rot(a5)
rotmrp.nonewwipe
move.l 4(a4),a2 ;morph start
add.l a5,a2
lea rotmrp.wrk,a0
lea rotmrp.add,a6
move.l rotmrppos-rot(a5),d0
move.w #vew_hgt-4-1,d2
rotmrp.f
move.l (a6)+,d7
muls.l d0,d7
divs.l #64*vew_hgt,d7 ;/18560
move.l (a2)+,d6
add.l d7,d6
move.l d6,(a0)+
dbra d2,rotmrp.f
add.l #1,d0
cmp.l #(vew_hgt/2)+1,d0
beq.s rotmrp.g
move.l d0,rotmrppos-rot(a5)
rotmrp.g
movem.l (sp),d0-d7/a0-a6
lea rotmrp.wrk,a2
clr.l d6
move.w pic_hgt(a1),d6 ;hoogte
cmp.w #vew_hgt-2,d6 ;high centring
bge.s rotmrp.d
move.w #vew_hgt-2,d0
sub.w d6,d0
lsr.w #1,d0
move.l d0,d6
lsl.w #2,d6
add.l d6,a2 ;morph table
rotmrp.d
move.l a3,a0
lea rotcopscr,a4
moveq.l #0,d7
move.w pic_dpt(a1),d7 ;depth
lsr.l #1,d7
move.w pic_hgt(a1),d2 ;hoogte
sub.w #1,d2
rotmrp.c
move.l (a2)+,d0
cmp.w #0,d0
blt.s rotmrp.h
cmp.w #vew_hgt-4,d0
bge.s rotmrp.h
st (a4,d0) ;fill copperscreen
move.w d0,d6 ;muls #rotcop.t,d0 ;* $48
lsl.w #6,d6 ;*64
lsl.w #3,d0 ;*8
add.w d6,d0
add.l d0,a3
move.w d7,d0 ;depth
sub.b #1,d0
rotmrp.a
move.w d5,22(a3)
swap d5
move.w d5,18(a3)
swap d5
move.w d1,30(a3)
swap d1
move.w d1,26(a3)
swap d1
lea 16(a3),a3
add.l d3,d5
add.l d4,d1
dbra d0,rotmrp.a
move.l a0,a3
bra.s rotmrp.i
rotmrp.h
move.w d7,d0 ;depth
sub.b #1,d0
rotmrp.j
add.l d3,d5
add.l d4,d1
dbra d0,rotmrp.j
rotmrp.i
dbra d2,rotmrp.c
bsr rotcopfil
rotmrp.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotsin
movem.l d0-d7/a0-a6,-(sp)
bsr rotcopclr
tst.b rottrgrot-rot(a5)
beq.s rotsin.nonewwipe
clr.b rottrgrot-rot(a5)
rotsin.nonewwipe
lea rotsintab,a6
move.l 4(a4),d0 ;sinus position
move.l 8(a4),d1 ;sinus speed
add.l d1,d0
cmp.l #0,d0
bge rotsin.k1
add.l #360*4,d0
rotsin.k1
cmp.l #360*4,d0
blt rotsin.k2
sub.l #360*4,d0
rotsin.k2
move.l d0,4(a4)
move.l 12(a4),d2 ;size position
move.l 16(a4),d3 ;size speed
add.l d3,d2
cmp.l #0,d2
bge rotsin.l1
add.l #360*4,d2
rotsin.l1
cmp.l #360*4,d2
blt rotsin.l2
sub.l #360*4,d2
rotsin.l2
move.l d2,12(a4)
move.w (a6,d2),d6 ;get sinus value
ext.l d6
divs #65536/((vew_hgt-4)),d6
add.w #((vew_hgt-4))/2,d6
ext.l d6
move.l #65536+32768,d2
tst.w d6
bne rotsin.l3
move.w #1,d6
rotsin.l3
divs.l d6,d2 ;680++ !
tst.w d2
bne rotsin.l4
move.w #1,d2
rotsin.l4
move.l 20(a4),d4 ;centre position
move.l 24(a4),d5 ;centre speed
add.l d5,d4
cmp.l #0,d4
bge rotsin.m1
add.l #360*4,d4
rotsin.m1
cmp.l #360*4,d4
blt rotsin.m2
sub.l #360*4,d4
rotsin.m2
move.l d4,20(a4)
move.w (a6,d4),d4 ;get sinus value
ext.l d4
divs #65536/((vew_hgt-4)/4),d4
add.w #(vew_hgt-4)/2,d4
lea rotsin.wrk,a0
move.w #vew_hgt-4-1,d7
rotsin.f
move.w (a6,d0),d6 ;get sinus value
ext.l d6
divs d2,d6
add.w d4,d6
move.w d6,2(a0)
lea 4(a0),a0
add.l #2,d0
cmp.w #360*4,d0
bne rotsin.f2
moveq.l #0,d0
rotsin.f2
dbra d7,rotsin.f
movem.l (sp),d0-d7/a0-a6
lea rotsin.wrk,a2
clr.l d6
move.w pic_hgt(a1),d6 ;hoogte
cmp.w #vew_hgt-2,d6 ;high centring
bge.s rotsin.d
move.w #vew_hgt-2,d0
sub.w d6,d0
lsr.w #1,d0
move.l d0,d6
lsl.w #2,d6
add.l d6,a2 ;morph table
rotsin.d
move.l a3,a0
lea rotcopscr,a4
moveq.l #0,d7
move.w pic_dpt(a1),d7 ;depth
lsr.l #1,d7
move.w pic_hgt(a1),d2 ;hoogte
sub.w #1,d2
rotsin.c
move.l (a2)+,d0
cmp.w #0,d0
blt.s rotsin.h
cmp.w #vew_hgt-4,d0
bge.s rotsin.h
st (a4,d0) ;fill copperscreen
move.w d0,d6 ;muls #rotcop.t,d0 ;* $48
lsl.w #6,d6 ;*64
lsl.w #3,d0 ;*8
add.w d6,d0
add.l d0,a3
move.w d7,d0 ;depth
sub.b #1,d0
rotsin.a
move.w d5,22(a3)
swap d5
move.w d5,18(a3)
swap d5
move.w d1,30(a3)
swap d1
move.w d1,26(a3)
swap d1
lea 16(a3),a3
add.l d3,d5
add.l d4,d1
dbra d0,rotsin.a
move.l a0,a3
bra.s rotsin.i
rotsin.h
move.w d7,d0 ;depth
sub.b #1,d0
rotsin.j
add.l d3,d5
add.l d4,d1
dbra d0,rotsin.j
rotsin.i
dbra d2,rotsin.c
bsr rotcopfil
rotsin.end
movem.l (sp)+,d0-d7/a0-a6
rts
rotchp dc.l 0
rotmod dc.l 0
rotbuf dc.l 0
rotshp1 dc.l 0
rotshp2 dc.l 0
rottrgrot dc.l 0
rotmrppos dc.l 0
rotsinpos dc.l 0
rotwiptab
rotwiptab.ts
dc.l rotvew-rot,0,0,0,0,0,0 ;normal
rotwiptab.te
rotwiptab.t equ rotwiptab.te-rotwiptab.ts
dc.l rotmrp-rot,rotmrp.1-rot,rotmrp.2-rot,0,0,0,0 ;middle > normal
dc.l rotmrp-rot,rotmrp.4-rot,rotmrp.2-rot,0,0,0,0 ;top > normal
dc.l rotmrp-rot,rotmrp.5-rot,rotmrp.2-rot,0,0,0,0 'bottom > normal
dc.l rotmrp-rot,rotmrp.3-rot,rotmrp.2-rot,0,0,0,0 ;mirro > normal
dc.l rotmrp-rot,rotmrp.1-rot,rotmrp.6-rot,0,0,0,0 ;middle > mixed
dc.l rotmrp-rot,rotmrp.6-rot,rotmrp.2-rot,0,0,0,0 ;mixed > normal
dc.l rotmrp-rot,rotmrp.7-rot,rotmrp.2-rot,0,0,0,0 ;big > normal
; posy spdy poss spds posm spdm
dc.l rotsin-rot,0,10,0,0,0,0 ;sinus 1
dc.l rotsin-rot,0,10,0,2,0,0 ;sinus 2
dc.l rotsin-rot,0,10,0,0,0,4 ;sinus 3
dc.l rotsin-rot,0,10,0,2,0,4 ;sinus 4
dc.l rotsin-rot,0,10,0,6,0,2 ;sinus
dc.l rotmrp-rot,rotsin.wrk-rot,rotmrp.2-rot,0,0,0,0 ;sinus > normal
rotmrp.1
dcb.l vew_hgt-4,(vew_hgt/2)
rotmrp.2
dc.l 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
dc.l 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
dc.l 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62
dc.l 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82
dc.l 83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101
dc.l 102,103,104,105,106,107,108,109,110,111,112,113,114,115,116
dc.l 117,118,119,120,121,122,123,124,125,126,127,128,129,130,131
dc.l 132,133,134,135,136,137,138,139,140,141,142,143,144,145,146
dc.l 147,148,149,150,151,152,153,154,155,156,157,158,159,160,161
dc.l 162,163,164,165,166,167,168,169,170,171,172,173,174,175,176
dc.l 177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
dc.l 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206
dc.l 207,208,209,210,211,212,213,214,215,216,217,218,219,220,221
dc.l 222,223,224,225,226,227,228,229,230,231,232,233,234,235,236
dc.l 237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
dc.l 252,253,254,255,256,257,258,259,260,261,262,263,264,265,266
dc.l 267,268,269,270,271,272,273,274,275,276,277,278,279,280,281
dc.l 282,283,284,285
rotmrp.3
dc.l 285,284,283,282,281,280,279,278,277,276,275,274,273,272
dc.l 271,270,269,268,267,266,265,264,263,262,261,260,259,258,257
dc.l 256,255,254,253,252,251,250,249,248,247,246,245,244,243,242
dc.l 241,240,239,238,237,236,235,234,233,232,231,230,229,228,227
dc.l 226,225,224,223,222,221,220,219,218,217,216,215,214,213,212
dc.l 211,210,209,208,207,206,205,204,203,202,201,200,199,198,197
dc.l 196,195,194,193,192,191,190,189,188,187,186,185,184,183,182
dc.l 181,180,179,178,177,176,175,174,173,172,171,170,169,168,167
dc.l 166,165,164,163,162,161,160,159,158,157,156,155,154,153,152
dc.l 151,150,149,148,147,146,145,144,143,142,141,140,139,138,137
dc.l 136,135,134,133,132,131,130,129,128,127,126,125,124,123,122
dc.l 121,120,119,118,117,116,115,114,113,112,111,110,109,108,107
dc.l 106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90
dc.l 89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70
dc.l 69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50
dc.l 49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30
dc.l 29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10
dc.l 9,8,7,6,5,4,3,2,1,0
rotmrp.4
ds.l vew_hgt-4
rotmrp.5
dcb.l vew_hgt-4,vew_hgt-4
rotmrp.6
dc.l 0,285,2,283,4,281,6,279,8,277,10,275,12,273,14,271,16,269
dc.l 18,267,20,265,22,263,24,261,26,259,28,257,30,255,32,253,34
dc.l 251,36,249,38,247,40,245,42,243,44,241,46,239,48,237,50,235
dc.l 52,233,54,231,56,229,58,227,60,225,62,223,64,221,66,219,68
dc.l 217,70,215,72,213,74,211,76,209,78,207,80,205,82,203,84,201
dc.l 86,199,88,197,90,195,92,193,94,191,96,189,98,187,100,185,102
dc.l 183,104,181,106,179,108,177,110,175,112,173,114,171,116,169
dc.l 118,167,120,165,122,163,124,161,126,159,128,157,130,155,132
dc.l 153,134,151,136,149,138,147,140,145,142,143,144,141,146,139
dc.l 148,137,150,135,152,133,154,131,156,129,158,127,160,125,162
dc.l 123,164,121,166,119,168,117,170,115,172,113,174,111,176,109
dc.l 178,107,180,105,182,103,184,101,186,99,188,97,190,95,192,93
dc.l 194,91,196,89,198,87,200,85,202,83,204,81,206,79,208,77,210
dc.l 75,212,73,214,71,216,69,218,67,220,65,222,63,224,61,226,59
dc.l 228,57,230,55,232,53,234,51,236,49,238,47,240,45,242,43,244
dc.l 41,246,39,248,37,250,35,252,33,254,31,256,29,258,27,260,25
dc.l 262,23,264,21,266,19,268,17,270,15,272,13,274,11,276,9,278,7
dc.l 280,5,282,3,284,1
rotmrp.7
dc.l -142*32,-141*32,-140*32,-139*32,-138*32,-137*32
dc.l -136*32,-135*32,-134*32,-133*32,-132*32,-131*32,-130*32,-129*32,-128*32,-127*32,-126*32,-125*32,-124*32,-123*32,-122*32
dc.l -121*32,-120*32,-119*32,-118*32,-117*32,-116*32,-115*32,-114*32,-113*32,-112*32,-111*32,-110*32,-109*32,-108*32,-107*32
dc.l -106*32,-105*32,-104*32,-103*32,-102*32,-101*32,-100*32,-99*32,-98*32,-97*32,-96*32,-95*32,-94*32,-93*32,-92*32,-91*32,-90*32
dc.l -89*32,-88*32,-87*32,-86*32,-85*32,-84*32,-83*32,-82*32,-81*32,-80*32,-79*32,-78*32,-77*32,-76*32,-75*32,-74*32,-73*32,-72*32,-71*32,-70*32
dc.l -69*32,-68*32,-67*32,-66*32,-65*32,-64*32,-63*32,-62*32,-61*32,-60*32,-59*32,-58*32,-57*32,-56*32,-55*32,-54*32,-53*32,-52*32,-51*32,-50*32
dc.l -49*32,-48*32,-47*32,-46*32,-45*32,-44*32,-43*32,-42*32,-41*32,-40*32,-39*32,-38*32,-37*32,-36*32,-35*32,-34*32,-33*32,-32*32,-31*32,-30*32
dc.l -29*32,-28*32,-27*32,-26*32,-25*32,-24*32,-23*32,-22*32,-21*32,-20*32,-19*32,-18*32,-17*32,-16*32,-15*32,-14*32,-13*32,-12*32,-11*32,-10*32
dc.l -9*32,-8*32,-7*32,-6*32,-5*32,-4*32,-3*32,-2*32,-1*32
dc.l 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32,16*32,17*32,18*32,19*32,20*32,21*32,22*32
dc.l 23*32,24*32,25*32,26*32,27*32,28*32,29*32,30*32,31*32,32*32,33*32,34*32,35*32,36*32,37*32,38*32,39*32,40*32,41*32,42*32
dc.l 43*32,44*32,45*32,46*32,47*32,48*32,49*32,50*32,51*32,52*32,53*32,54*32,55*32,56*32,57*32,58*32,59*32,60*32,61*32,62*32
dc.l 63*32,64*32,65*32,66*32,67*32,68*32,69*32,70*32,71*32,72*32,73*32,74*32,75*32,76*32,77*32,78*32,79*32,80*32,81*32,82*32
dc.l 83*32,84*32,85*32,86*32,87*32,88*32,89*32,90*32,91*32,92*32,93*32,94*32,95*32,96*32,97*32,98*32,99*32,100*32,101*32
dc.l 102*32,103*32,104*32,105*32,106*32,107*32,108*32,109*32,110*32,111*32,112*32,113*32,114*32,115*32,116*32
dc.l 117*32,118*32,119*32,120*32,121*32,122*32,123*32,124*32,125*32,126*32,127*32,128*32,129*32,130*32,131*32
dc.l 132*32,133*32,134*32,135*32,136*32,137*32,138*32,139*32,140*32,141*32,142*32,143*32
rotsin.wrk
ds.l vew_hgt-4
rotmrp.wrk
ds.l vew_hgt-4
rotmrp.add
ds.l vew_hgt-4
rotcopemp ds.b 192
cnop 0,4
rotcopscr ds.b vew_hgt
cnop 0,4
; posx posy spdx spdy
rotshptab
rept 2
dc.l 0, 0, 0, 0 ;0 stil
dc.l 0, 0, 2, 0 ;1 -
dc.l 0, 0, 0, 2 ;2 |
dc.l 0, 180*2, 2, 2 ;3 o
dc.l 180*2, 0, 2, 4 ;4 (X)
dc.l 0, 180*2, 4, 2 ;5 8
dc.l 0, 180*2, 4, 6 ;6 weird
dc.l 0, 0, 0, 0 ;7
dc.l 0, 0, 0, 0 ;8
dc.l 0, 0, 0, 0 ;9
dc.l 0, 0, 0, 0 ;10
dc.l 0, 0, 0, 0 ;11
dc.l 0, 0, 0, 0 ;12
dc.l 0, 0, 0, 0 ;13
dc.l 0, 0, 0, 0 ;14
dc.l 0, 0, 0, 0 ;15
endr
rotsintab
dc.w 0,286,572,858,1144,1429,1715,2000,2286,2571,2856,3141
dc.w 3425,3709,3993,4277,4560,4843,5126,5408,5690,5971,6252,6533
dc.w 6813,7092,7371,7649,7927,8204,8481,8757,9032,9306,9580,9853
dc.w 10126,10397,10668,10938,11207,11475,11743,12009,12275,12539,12803,13066
dc.w 13328,13588,13848,14107,14364,14621,14876,15130,15383,15635,15886,16135
dc.w 16383,16631,16876,17121,17364,17606,17846,18085,18323,18559,18794,19028
dc.w 19260,19491,19720,19947,20173,20398,20621,20842,21062,21280,21497,21712
dc.w 21925,22137,22347,22555,22762,22967,23170,23371,23571,23768,23964,24158
dc.w 24351,24541,24730,24916,25101,25284,25465,25644,25821,25996,26169,26340
dc.w 26509,26676,26841,27004,27165,27324,27481,27635,27788,27938,28087,28233
dc.w 28377,28519,28659,28796,28932,29065,29196,29324,29451,29575,29697,29817
dc.w 29934,30049,30162,30273,30381,30487,30591,30692,30791,30888,30982,31074
dc.w 31163,31250,31335,31418,31498,31575,31650,31723,31794,31862,31927,31990
dc.w 32051,32109,32165,32218,32269,32318,32364,32407,32448,32487,32523,32556
dc.w 32588,32616,32642,32666,32687,32706,32722,32736,32747,32756,32762,32766
dc.w 32767,32766,32762,32756,32747,32736,32722,32706,32687,32666,32642,32616
dc.w 32588,32556,32523,32487,32448,32407,32364,32318,32269,32218,32165,32109
dc.w 32051,31990,31927,31862,31794,31723,31650,31575,31498,31418,31335,31250
dc.w 31163,31074,30982,30888,30791,30692,30591,30487,30381,30273,30162,30049
dc.w 29934,29817,29697,29575,29451,29324,29196,29065,28932,28796,28659,28519
dc.w 28377,28233,28087,27938,27788,27635,27481,27324,27165,27004,26841,26676
dc.w 26509,26340,26169,25996,25821,25644,25465,25284,25101,24916,24730,24541
dc.w 24351,24158,23964,23768,23571,23371,23170,22967,22762,22555,22347,22137
dc.w 21925,21712,21497,21280,21062,20842,20621,20398,20173,19947,19720,19491
dc.w 19260,19028,18794,18559,18323,18085,17846,17606,17364,17121,16876,16631
dc.w 16384,16135,15886,15635,15383,15130,14876,14621,14364,14107,13848,13588
dc.w 13328,13066,12803,12539,12275,12009,11743,11475,11207,10938,10668,10397
dc.w 10126,9853,9580,9306,9032,8757,8481,8204,7927,7649,7371,7092
dc.w 6813,6533,6252,5971,5690,5408,5126,4843,4560,4277,3993,3709
dc.w 3425,3141,2856,2571,2286,2000,1715,1429,1144,858,572,286
dc.w 0,-285,-571,-857,-1143,-1429,-1714,-2000,-2285,-2570,-2855,-3140
dc.w -3425,-3709,-3993,-4276,-4560,-4843,-5125,-5408,-5689,-5971,-6252,-6532
dc.w -6812,-7092,-7370,-7649,-7927,-8204,-8480,-8756,-9031,-9306,-9580,-9853
dc.w -10125,-10397,-10667,-10937,-11206,-11475,-11742,-12009,-12274,-12539,-12803,-13065
dc.w -13327,-13588,-13847,-14106,-14364,-14620,-14875,-15130,-15383,-15635,-15885,-16135
dc.w -16383,-16630,-16876,-17120,-17363,-17605,-17846,-18085,-18323,-18559,-18794,-19027
dc.w -19259,-19490,-19719,-19947,-20173,-20397,-20620,-20842,-21062,-21280,-21497,-21712
dc.w -21925,-22137,-22347,-22555,-22761,-22966,-23169,-23371,-23570,-23768,-23964,-24158
dc.w -24350,-24541,-24729,-24916,-25100,-25283,-25464,-25643,-25820,-25995,-26168,-26339
dc.w -26509,-26676,-26841,-27004,-27165,-27323,-27480,-27635,-27787,-27938,-28086,-28233
dc.w -28377,-28518,-28658,-28796,-28931,-29064,-29195,-29324,-29450,-29575,-29696,-29816
dc.w -29934,-30049,-30162,-30272,-30381,-30486,-30590,-30691,-30790,-30887,-30981,-31073
dc.w -31163,-31250,-31335,-31417,-31497,-31575,-31650,-31723,-31793,-31861,-31927,-31990
dc.w -32050,-32109,-32164,-32218,-32269,-32317,-32363,-32407,-32448,-32486,-32522,-32556
dc.w -32587,-32616,-32642,-32665,-32687,-32705,-32722,-32735,-32747,-32755,-32762,-32765
dc.w -32767,-32765,-32762,-32755,-32747,-32735,-32722,-32705,-32687,-32665,-32642,-32616
dc.w -32587,-32556,-32522,-32486,-32448,-32407,-32363,-32317,-32269,-32218,-32164,-32109
dc.w -32050,-31990,-31927,-31861,-31793,-31723,-31650,-31575,-31497,-31417,-31335,-31250
dc.w -31163,-31073,-30981,-30887,-30790,-30691,-30590,-30486,-30381,-30272,-30162,-30049
dc.w -29934,-29816,-29696,-29575,-29450,-29324,-29195,-29064,-28931,-28796,-28658,-28518
dc.w -28377,-28233,-28086,-27938,-27787,-27635,-27480,-27323,-27165,-27004,-26841,-26676
dc.w -26509,-26339,-26168,-25995,-25820,-25643,-25464,-25283,-25100,-24916,-24729,-24541
dc.w -24350,-24158,-23964,-23768,-23570,-23371,-23169,-22966,-22761,-22555,-22347,-22137
dc.w -21925,-21712,-21497,-21280,-21062,-20842,-20620,-20397,-20173,-19947,-19719,-19490
dc.w -19259,-19027,-18794,-18559,-18323,-18085,-17846,-17605,-17363,-17120,-16876,-16630
dc.w -16383,-16135,-15885,-15635,-15383,-15130,-14875,-14620,-14364,-14106,-13847,-13588
dc.w -13327,-13065,-12803,-12539,-12274,-12009,-11742,-11475,-11206,-10937,-10667,-10397
dc.w -10125,-9853,-9580,-9306,-9031,-8756,-8480,-8204,-7927,-7649,-7370,-7092
dc.w -6812,-6532,-6252,-5971,-5689,-5408,-5125,-4843,-4560,-4276,-3993,-3709
dc.w -3425,-3140,-2855,-2570,-2285,-2000,-1714,-1429,-1143,-857,-571,-285
rotsintab.e
rotp.e
SECTION 4,CODE_c
cnop 0,8
rotc
ifd ocs
dc.l 'ROTO'
endc
ifnd ocs
dc.l 'ROTA'
endc
rts
cnop 0,8
rotcop.1
dc.w $0080,$0000,$0082,$0000
rotcop.ts
dc.w $00c1,$fffe
dc.w $0102,$0000
dc.w $00e0,$0000,$00e2,$0000 ;1
dc.w $00e4,$0000,$00e6,$0000 ;2
dc.w $00e8,$0000,$00ea,$0000 ;3
dc.w $00ec,$0000,$00ee,$0000 ;4
dc.w $00f0,$0000,$00f2,$0000 ;5
dc.w $00f4,$0000,$00f6,$0000 ;6
ifnd ocs
dc.w $00f8,$0000,$00fa,$0000 ;7
dc.w $00fc,$0000,$00fe,$0000 ;8
endc
rotcop.te
rotcop.t equ rotcop.te-rotcop.ts
rept vew_hgt-5
dc.w $00c1,$fffe
dc.w $0102,$0000
dc.w $00e0,$0000,$00e2,$0000 ;1
dc.w $00e4,$0000,$00e6,$0000 ;2
dc.w $00e8,$0000,$00ea,$0000 ;3
dc.w $00ec,$0000,$00ee,$0000 ;4
dc.w $00f0,$0000,$00f2,$0000 ;5
dc.w $00f4,$0000,$00f6,$0000 ;6
ifnd ocs
dc.w $00f8,$0000,$00fa,$0000 ;7
dc.w $00fc,$0000,$00fe,$0000 ;8
endc
endr
dc.w $0088,$0000
dc.w $ffff,$fffe
rotcop.2
ds.b rotcop.2-rotcop.1
rotcop_l equ rotcop.2-rotcop.1
rotc.e
rot.e
;**********************************************************************
;and here are the incbin-files....
ifd rout
cnop 0,8
rotincpic
ifd ocs
incbin 'w:effect/circles512_l4.pic'
endc
ifnd ocs
incbin 'w:effectaga/schoolgirls_16.bru'
; incbin 'w:effectaga/act_16.bru'
; incbin 'w:effectaga/rainbow_256.pic'
endc
endc